package recursive

import "fmt"

func Recursive() {
	// 递归函数
	// 斐波那契数列，特点：传递位置，返回值
	// 1->1 2->1 3->2 4->3 5->5 ... n -> func(n-1) + func(n-2)

	// fmt.Println(123)
	fmt.Println(fibonacci(5)) // 20->6765 5->5
	fmt.Println(factorial(5)) // 5->120
}

func fibonacci(index int) int64 {
	if index == 1 || index == 2 {
		return 1
	} else {
		return fibonacci(index-1) + fibonacci(index-2)
	}
}

// 计算阶乘
func factorial(vars int) int {
	if vars == 0 {
		return 1
	} else {
		return vars * factorial(vars-1)
	}
}
